var NotificationCenter = require('../tools/SimpleNotificationCenter');
/**
 * 土地组件 保存少量的信息
 */

cc.Class({
    extends: cc.Component,

    properties: {
        //土地类型， 0 空地 1 耕地 2 建筑
        type: {
            default: 0,
            type: Number
        },
        model: {
            default: null,
            type: Object
        },
        /**************************
        * Prefabs
        **************************/
        //植物的预制资源
        plantItem: {
            default: null,
            type: cc.Prefab
        }

    },

    // use this for initialization
    onLoad: function () {
        //设置事件
        this.setEvents();
        //设置计时器
        this.setSchedules();
    },
    setEvents: function () {
        this.node.on('touchend', this.touchDispatcher, this);
    },
    setSchedules: function () {
        //设置土地计时器
        this.schedule(this.farmGroundScheduleHandler.bind(this), 1);
    },
    /**
     * 处理地块的单击事件
     * 
     */
    touchDispatcher: function (event) {

        switch (this.type) {
            case 0:
                this.emptyGroundTouchHandler();
                break;
            case 1:
                if (!this.model) {
                    this.model = {
                        state: 0
                    }
                }
                this.farmGroundTouchHandler();
                break;
            case 2:
                if (!this.model) {
                    this.model = {

                    };
                }
                this.houseGroundTouchHandler();
                break;
        }


    },

    /**
     * 空地的touch事件处理
     */
    emptyGroundTouchHandler: function () {
        //处理空地    
        cc.loader.loadRes("textures/nonetrimground.plist/ground_farm", function (err, spriteFrame) {
            if (err) {
                cc.log(err);
                return;
            }

            this.node.getComponent(cc.Sprite).spriteFrame = spriteFrame;
            this.type = 1;

        }.bind(this));

    },
    /**
     * 耕地touch事件处理
     */
    farmGroundTouchHandler: function () {
        //处理耕地
        switch (this.model.state) {
            //空地
            case 0:
                cc.log("我们需要选择")
                //在这里 我们需要处理弹窗事件
                NotificationCenter.notify('showSeedStore', this);
                //设置通知处理
                NotificationCenter.observe("pickedSeed", this.pickedSeedHandler, this);
                break;
            case 1:
                cc.log("现在还是种子阶段呢");
                break;
            case 2:
                cc.log("现在还是发芽阶段呢");
                break;
            case 3:
                cc.log("可以收获啦");
                this.sowPlants();
                break;
            default:
                cc.log("这尼玛是什么鬼");

        }

    },
    /**
     * 建筑touch事件处理
     */
    houseGroundTouchHandler: function () {
        //处理建筑  



    },

    /**
     * 初始化植物
     * 依据Model初始化植物
     */
    createPlants: function () {

        //获取容器节点
        var content = this.node.getChildByName('Content');
        //清理下边所有的子节点
        content.removeAllChildren(true);

        //设置资源url
        var plantResUrl = null;

        if (this.model) {
            //只处理种子 嫩芽 可收获植物状态
            switch (this.model.state) {
                case 1:
                    plantResUrl = "textures/nonetrimground.plist/seed";
                    break;
                case 2:
                    plantResUrl = "textures/nonetrimground.plist/bud";
                    break;
                case 3:
                    plantResUrl = "textures/icons.plist/plant_" + this.model.type;
                    break;
                default:
                    cc.log("空地没必要产生这些奇怪的东西");
                    return;
            }

        }
        //加载资源
        cc.loader.loadRes(plantResUrl, function (err, spriteFrame) {
            //循环创建植物
            for (var i = 0; i < this.model.count; i++) {
                //构造植物的实例
                var plant = cc.instantiate(this.plantItem)
                //设置贴图
                plant.getComponent(cc.Sprite).spriteFrame = spriteFrame;

                //把植物放到容器中
                content.addChild(plant);
            }
        }.bind(this));

    },
    /**
     * 收获植物
     */
    sowPlants: function () {

    },

    /**
     * 种子选择的handler
     */
    pickedSeedHandler: function (event, sender, data) {


        //取消通知处理
        NotificationCenter.removeEventObserves("pickedSeed");

        if (!data.isClose) {
            //随机生成种子数量
            var plantCount = 1 + Math.round(Math.random() * 8);
            //获取收获时间
            var sowTime = new Date().getTime() + data.model.cycle * 1000;

            cc.log("cycle:", data.model.cycle * 1000);

            this.model = {
                type: data.model.type,
                count: plantCount,
                cycle: data.model.cycle,
                sowTime: sowTime,
                state: 1
            };
            //产生植物
            this.createPlants();
        }


    },
    //处理耕地
    farmGroundScheduleHandler: function (dt) {
        if (this.type == 1 && this.model && this.model.state > 0 && this.model.state < 3) {

            //缓存一下旧的状态
            var oldState = this.model.state;

            //不是空地的情况下才进行状态监测

            if (new Date().getTime() >= this.model.sowTime) {
                this.model.state = 3;

            } else {
                var timespan = new Date().getTime();
                var subtime = (this.model.sowTime - timespan) / 1000;

                var halfTime = this.model.cycle / 2;
                if (subtime <= halfTime && subtime > 0) {
                    this.model.state = 2;
                }
            }
            //如果发生了变化
            if (oldState != this.model.state) {
                //重新创建植物
                this.createPlants();
            }
        }
    }

});
